/**
 * 作者： Created by wtzhang
 * 说明： 登录流程
 * 1. 收集收集表单项数据
 * 2. 前端验证
 *    1）验证用户信息（账号，密码）是否合法
 *    2）前端验证不通过就提示用户，不需要发送请求给后端
 *    3）前端验证通过了，发送请求（携带账号、密码）给服务器端
 * 3. 后端验证
 *    1）验证用户是否存在
 *    2）用户不存在直接返回，告诉前端该用户不存在
 *    3）用户存在需要验证密码是否正确
 *    4）密码不正确，反馈信息给前端密码不正确
 *    5）密码正确返回数据给前端，提示用户登录成功
 */
import Api from '../../utils/request'
// pages/login/login.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    phone: '',
    password: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 表单项内容发生变化时的回调
   */
  handleInput(event) {
    // console.log(event);
    let type = event.currentTarget.dataset.type // 此方法适用获取多个标识（值），以data- 作为配合传参
    // 以下适合唯一标识
    // let type = event.currentTarget.id // 方法1 取值：phone || password
    // let type = event.target.id // 方法2
    // console.log(type, event.detail.value);
    this.setData({
      [type]: event.detail.value // type 是个变量，在对象中更新（操作）属性变量值得用 [] 包裹
    })
  },
  // 登录功能回调
  async login() {
    let { phone, password } = this.data // 结构赋值
    /************************* 前端验证 ********************** */
    // 判断手机号是否为空
    if (!phone) {
      wx.showToast({
        title: '手机号不能为空！',
        icon: 'none'
      });
      return;
    }
    // 验证手机号格式是否合法
    let phoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/ // 手机号正则
    if (!phoneReg.test(phone)) {
      wx.showToast({
        title: '手机号格式不合法，请输入正确的手机号码！',
        icon: 'none'
      });
      return;
    }
    // 判断密码是否为空
    if (!password) {
      wx.showToast({
        title: '密码不能为空！',
        icon: 'none'
      });
      return;
    }
    /************************* 后端验证 ********************** */
    let result = await Api.request('/login/cellphone', { phone, password, isLogin:true })
    console.log(result);
    if (result.code === 200) {
      wx.showToast({
        title: '登录成功！'
      })
      // 将登录信息缓存至本地
      wx.setStorageSync('userInfo', JSON.stringify(result.profile))
      // 登录成功跳转至个人中心页面
      // wx.switchTab // switchTab 跳转不会小虎页面导致返回个人中心页面，数据无法渲染
      wx.reLaunch({
        url: '/pages/personal/personal',
      })
    } else if (result.code === 502) {
      wx.showToast({
        title: '密码错误，请重新输入！',
        icon: 'none'
      })
    } else if (result.code === 501) {
      wx.showToast({
        title: '账户不存在！',
        icon: 'none'
      })
    } else {
      wx.showToast({
        title: '网络延迟，请稍后重新登录！',
        icon: 'none'
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})